﻿using System;
using System.Collections;
using System.Web.UI.WebControls;
using ASPNETVN.PORTAL.Components.Configuration.Settings;
using ASPNETVN.PORTAL.Components.Helpers;
using ASPNETVN.PORTAL.Components.UI;
using ASPNETVN.PORTAL.Components.UI.DataTypes;

namespace ASPNETVN.PORTAL.Modules.CMS
{
    public enum ModulePages
    {
        Item,
        Item2,
        Detail
    }

    public partial class Main : PortalModuleControl
    {
        public Main()
        {
            ModuleSettingItem itemSetting = new ModuleSettingItem(new BooleanDataType());
            itemSetting.Value = "false";
            itemSetting.Name = "Yêu cầu duyệt nội dung";
            itemSetting.Description = "Yêu cầu duyệt nội dung";
            itemSetting.SortOrder = 1;
            this.BaseSettings.Add("RequireApprobation", itemSetting);

            itemSetting = new ModuleSettingItem(new BooleanDataType());
            itemSetting.Value = "false";
            itemSetting.Name = "Yêu cầu duyệt nội dung của góp ý";
            itemSetting.Description = "Yêu cầu duyệt nội dung của góp ý";
            itemSetting.SortOrder = 2;
            this.BaseSettings.Add("Comment.RequireApproved", itemSetting);

            itemSetting = new ModuleSettingItem(new StringDataType());
            itemSetting.Value = "1";
            itemSetting.Name = "Số cột hiển thị";
            itemSetting.Description = "Số cột hiển thị";
            itemSetting.SortOrder = 3;
            this.BaseSettings.Add("Columns.Count", itemSetting);

            itemSetting = new ModuleSettingItem(new StringDataType());
            itemSetting.Value = "140";
            itemSetting.Name = "Chiều rộng của hình minh hoạt";
            itemSetting.Description = "Chiều rộng của hình minh hoạt";
            itemSetting.SortOrder = 4;
            this.BaseSettings.Add("Picture.Width", itemSetting);

            itemSetting = new ModuleSettingItem(new StringDataType());
            itemSetting.Value = "140";
            itemSetting.Name = "Chiều cao của hình minh hoạt";
            itemSetting.Description = "Chiều cao của hình minh hoạt";
            itemSetting.SortOrder = 5;
            this.BaseSettings.Add("Picture.Height", itemSetting);

            itemSetting = new ModuleSettingItem(new BooleanDataType());
            itemSetting.Value = "true";
            itemSetting.Name = "Hiển thị thông tin chi tiết: Ngày đăng, tác giả,...";
            itemSetting.Description = "Hiển thị thông tin chi tiết: Ngày đăng, tác giả,...";
            itemSetting.SortOrder = 6;
            this.BaseSettings.Add("ShowDetail", itemSetting);

            itemSetting = new ModuleSettingItem(new StringDataType());
            itemSetting.Value = "ONE;TWO;THREE";
            itemSetting.Name = "Vị trí hiển thị";
            itemSetting.Description = "Vị trí hiển thị";
            itemSetting.SortOrder = 7;
            this.BaseSettings.Add("DisplayType", itemSetting);

            // Define an Array List
            ArrayList list = new ArrayList();
            list.Add(new ListItem("Item Page No. 01", "Item"));
            list.Add(new ListItem("Item Page No. 02", "Item2"));
            itemSetting = new ModuleSettingItem(new CustomListDataType(list, "Text", "Value"));
            itemSetting.Value = "Item";
            itemSetting.Name = "Hình thức hiển thị Item Page";
            itemSetting.Description = "Hình thức hiển thị Item Page";
            itemSetting.SortOrder = 1;
            this.BaseSettings.Add("ItemPageStyle", itemSetting);
        }

        private void LoadChildControl()
        {
            const string basePath = "~/Modules/ASPNETVN.PORTAL.Modules.CMS/";
            const string pageQuery = "page";
            string pageName = Request.QueryString[pageQuery];

            ModulePages page = (ModulePages)Enum.Parse(typeof(ModulePages), this.Settings["ItemPageStyle"].ToString(), true);
            if (string.IsNullOrEmpty(pageName) == false)
            {
                page = (ModulePages)Enum.Parse(typeof(ModulePages), Request.QueryString[pageQuery], true);
                // Item page.
                if (pageName.ToUpper() == "ITEM")
                {
                    page = (ModulePages)Enum.Parse(typeof(ModulePages), this.Settings["ItemPageStyle"].ToString(), true);
                }
            }

            string src = string.Format("{0}Controls/{1}.ascx", basePath, page);
            ModulePage ctl = (ModulePage)this.LoadControl(src);
            ctl.ParentControl = this;
            ContentPane.Controls.Add(ctl);
        }

        protected void Page_Load(object sender, EventArgs e)
        {
            this.LoadChildControl();
            this.ModuleTitle.AddUrl = HttpUrlBuilder.BuildAddEditUrl(this.ModuleID, 0, "AddEditItem");
        }
    }
}